package j03oa;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

/*
1，学生检测
从控制台接收一个包含一组姓名的字符串, 例如: "张三, 李四, 王五, 赵六, 田七", 编写代码判断字符串中是否包含"xxx", xxx是一个人名. 如果包含输出"班级里有xxx", 否则输出"班级里没有xxx".
要求：使用split
 */
public class J2zuoye {
    public static void main(String[] args) {
        String dicStr = "张三, 李四, 王五, 赵六, 田七";
        System.out.println(contaisName(dicStr,"田七"));//true
        System.out.println(contaisName(dicStr,"六, 田"));//false
    }

    public static boolean contaisName(String dicStr,String target) {
        String[] dicArr = dicStr.split(", ");
//        System.out.println("dicArr = " + Arrays.toString(dicArr));
        for (int i = 0; i < dicArr.length; i++) {
            if(dicArr[i].equals(target)){
                //找到了
                return true;
            }
        }
        //没找到
        return false;
    }


}
/*
2，视频检测
从控制台接收一个表示文件名(含文件后缀)的字符串, 例如: "肖申克的救赎.mp4". 编写代码判断字符串表示的文件是否是一个视频文件. 如果是视频文件, 输出"xxx是一个视频文件", 否则输出"xxx不是视频文件", 其中xxx是输入的字符串.
 i saw her stand there
常见的视频后缀:
 .avi, .mp4, .mpg, .mpeg, .wmv, .mov, .rmvb, .swf, .flv, .ram
提示：可以把常见的视频后缀存入字符串数组, 遍历数组, 判断字符串是否包含后缀.
1.mp434.txt
 */
class J3Video{
    public static void main(String[] args) {
        System.out.println(isVideo("肖申克的救赎.mp4"));//true
        System.out.println(isVideo("肖申克的救赎.mp41"));//false
        System.out.println("=====");

        if(isVideo("肖申克的救赎.mp41")==false){
            try {
                throw new FileFormatException("文件格式不匹配");
            }catch (FileFormatException e){
                e.printStackTrace();
            }

        }
        System.out.println("end");
    }

    public static boolean isVideo(String videoName) {
        //视频后缀库
        String[] arr = {".avi", ".mp4", ".mpg"};
        for (int i = 0; i < arr.length; i++) {
            if(videoName.endsWith(arr[i])){
                return true;
            }
        }
        return false;
    }
}


class FileFormatException extends RuntimeException{
    public FileFormatException() {
    }

    public FileFormatException(String message) {
        super(message);
    }
}
/*
4，验证码生成
在StringTest2类里编写一个 public static String randomString(int length) 方法, length是字符串的长度,randomString方法的作用是随机产生一个该长度的字符串,字符串里只能包含大写,小写字母以及数字. 在main方法里测试randomString方法的功能.
 */
class J4code{
    public static void main(String[] args) {
        System.out.println(randomString(5));
        System.out.println(randomString(4));
        System.out.println(randomString(10));
    }

    public static String randomString(int length) {
        //0-9a-zA-Z
        //字符字典
        String dicStr = "";
        //0-9
        for (int i = 0; i < 10; i++) {
            dicStr += (char)(48+i);
        }
        //A-Z
        for (int i = 0; i < 26; i++) {
            dicStr += (char)(65+i);
        }
        //a-z
        for (int i = 0; i < 26; i++) {
            dicStr += (char)(97+i);
        }
//        System.out.println(dicStr);
        //结果
        String result = "";
        for (int i = 0; i < length; i++) {
            //[0-1)  *10 [0,10)
            //随机下标
            int pos = (int)(Math.random()*dicStr.length());
            result += dicStr.charAt(pos);
        }
        return result;
    }
}
/*
5，日期工具类
在com.hualan.main包里创建一个Test类，在类的main方法中测试下面的功能：
(1) 在com.hualan.util包里创建一个类DateUtil(日期工具类).
提供一个私有构造方法private DateUtil().
提供一个字符串转日期的方法public static Date dateFromString(String dateStr, String pattern), 其中pattern是日期的格式.
提供日期转字符串的方法 public static String stringOfDate(Date date, String pattern), 其中pattern是日期的格式.
提供一个标准格式字符串(yyyy-MM-dd HH:mm:ss)转日期的方法public static Date dateFromString(String dateStr).
提供一个日期转标准格式字符串的方法public static String stringOfDate(Date date).
在Test类的main方法中测试DateUtil类的各种方法.
 */

class J5DateUtil{
    public static void main(String[] args) {
        System.out.println(stringOfDate(new Date(),"yyyy-M-d H:m:s"));
        System.out.println(dateFromString("2024-8-27 15:40:0","yyyy-MM H:m:s"));
        System.out.println(dateFromString("2024-08-27 15:40:0","yyyy-MM-d H:m:s"));
    }
    public static String stringOfDate(Date date, String pattern){
        //定义格式类
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        return sdf.format(date);
    }
    public static Date dateFromString(String dateStr, String pattern){
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        Date date=null;
        try {
            date = sdf.parse(dateStr);
        }catch (Exception e){
            System.out.println("e = " + e);
        }

        return date;
    }
}